package com.yzycoc.score;

import com.yzycoc.form.FromUpdateEvent;
import com.yzycoc.info.ModuleInfo;
import com.yzycoc.module.DriverCsRobot;
import com.yzycoc.module.ModuleManage;
import com.yzycoc.processor.event.Event;
import com.yzycoc.processor.send.Api;
import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.List;


/**
 * 机器人驱动
 *
 * @author {author}
 * @version 1.0
 **/
@Slf4j
public class BotDriver implements DriverCsRobot {

    static {
        // 1. 需要修改包路径，防止出现相同类名无法加载服务(一定要改 com.gitee.yzycoc)
        // 2. 修改pom文件中 <finalName>xx-${project.groupId}-${project.version}</finalName> 打包后 保障 ${project.groupId}.coc 为包路径
        //          robot框架会直接执行 `Class.forName("${project.groupId}.BotDriver");` 内容初始化插件
        // 3. 需要在resources 中的 META-INFO.services 中添加该类的全路径  这里涉及到了 SPI 机制
        ModuleManage.register(new BotDriver());
    }



    public static Api API;

    @Override
    public ModuleInfo info() {
        return ModuleInfo.builder()
                //SDK 保障唯一性
                .name("cs-score")
                //简介说明
                .description("积分日常使用")
                //版本
                .version("1.0.0")
                //作者
                .author("仓鼠")
                //作者头像
                .authorUrl("https://yzycoc.com/i/10")
                //作者主页
                .authorWeb("https://yzycoc.com")
                .build();
    }

    /**
     * 事件监听 私聊消息 群聊消息监听，支持多个
     * @return 事件监听方法
     */
    @Override
    public List<Event> event() {
        return Arrays.asList(new SdkEvent());
    }

    /**
     * 获取API 系统只会初始化一次 需要进行存储起来
     * @param api 发送消息 获取API 相关信息
     */
    @Override
    public void api(Api api) {
        API = api;
    }

    /**
     * 菜单配置的基础信息
     * @return 表单信息
     */
    @Override
    public FromUpdateEvent formUpdate() {
        return null;
    }

    /**
     * 生命周期，插件初始化后执行的方法
     */
    @Override
    public void runSucceed() {

    }


}
